// 数据库配置测试程序
// 用于验证远程MySQL连接配置是否正确读取

#include <QCoreApplication>
#include <QDebug>
#include "database/databaseconfig.h"

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    
    qDebug() << "=== 数据库配置测试程序 ===";
    
    // 创建配置对象
    DatabaseConfig config;
    
    // 加载配置文件
    QString configPath = "database.ini";
    if (!config.loadConfig(configPath)) {
        qCritical() << "配置文件加载失败！";
        return -1;
    }
    
    // 输出配置信息
    qDebug() << "\n=== 基本数据库配置 ===";
    qDebug() << "主机地址：" << config.host();
    qDebug() << "端口：" << config.port();
    qDebug() << "数据库名：" << config.databaseName();
    qDebug() << "用户名：" << config.userName();
    qDebug() << "密码：" << QString("*").repeated(config.password().length());
    
    qDebug() << "\n=== 连接选项配置 ===";
    qDebug() << "连接超时：" << config.connectTimeout() << "秒";
    qDebug() << "读取超时：" << config.readTimeout() << "秒";
    qDebug() << "写入超时：" << config.writeTimeout() << "秒";
    qDebug() << "使用SSL：" << (config.useSSL() ? "是" : "否");
    qDebug() << "字符集：" << config.charset();
    qDebug() << "自动重连：" << (config.autoReconnect() ? "是" : "否");
    
    // 验证配置合理性
    qDebug() << "\n=== 配置验证 ===";
    bool isValid = true;
    
    if (config.host().isEmpty()) {
        qWarning() << "警告：主机地址为空";
        isValid = false;
    }
    
    if (config.port() <= 0 || config.port() > 65535) {
        qWarning() << "警告：端口号无效：" << config.port();
        isValid = false;
    }
    
    if (config.databaseName().isEmpty()) {
        qWarning() << "警告：数据库名为空";
        isValid = false;
    }
    
    if (config.userName().isEmpty()) {
        qWarning() << "警告：用户名为空";
        isValid = false;
    }
    
    if (config.connectTimeout() <= 0) {
        qWarning() << "警告：连接超时时间无效：" << config.connectTimeout();
        isValid = false;
    }
    
    if (isValid) {
        qDebug() << "✓ 配置验证通过！";
        qDebug() << "\n=== 远程连接提示 ===";
        qDebug() << "1. 确保远程MySQL服务器运行在" << config.host() << ":" << config.port();
        qDebug() << "2. 检查防火墙是否允许端口" << config.port() << "的连接";
        qDebug() << "3. 确保MySQL用户" << config.userName() << "具有远程连接权限";
        qDebug() << "4. 在Linux虚拟机中可使用以下命令测试连接：";
        qDebug() << "   mysql -h" << config.host() << "-P" << config.port() << "-u" << config.userName() << "-p" << config.databaseName();
    } else {
        qCritical() << "✗ 配置验证失败！请检查配置文件";
        return -1;
    }
    
    qDebug() << "\n=== 测试完成 ===";
    return 0;
}